package com.yunwaikeji.gy_tool_library.utils;

import java.text.DecimalFormat;

/**
 * 计量单位
 * bytes与KB、MB、GB单位转换
 */
public class GYUnitUtils {
    //定义GB的计算常量
    private static final int GB = 1024 * 1024 * 1024;
    //定义MB的计算常量
    private static final int MB = 1024 * 1024;
    //定义KB的计算常量
    private static final int KB = 1024;

    public static String bytes2kmg(long bytes, boolean isUnitName) {
        //格式化小数
        DecimalFormat format = new DecimalFormat("0.00");
        if (bytes / GB >= 1) {
            if (isUnitName) {
                return format.format((float)bytes / GB) + "GB";
            } else {
                return format.format((float)bytes / GB);
            }
        } else if (bytes / MB >= 1) {
            if (isUnitName) {
                return format.format((float)bytes / MB) + "MB";
            } else {
                return format.format((float)bytes / MB);
            }
        } else if (bytes / KB >= 1) {
            if (isUnitName) {
                return format.format((float)bytes / KB) + "KB";
            } else {
                return format.format((float)bytes / KB);
            }
        } else if (isUnitName) {
            return bytes + "B";
        } else {
            return String.valueOf(bytes);
        }
    }

    /**
     * byte转kb
     *
     * @param bytes
     * @return
     */
    public static String byte2kb(long bytes) {
        //格式化小数
        return byte2kb(bytes,"");
    }

    /**
     * byte转kb
     *
     * @param bytes
     * @return
     */
    public static String byte2kb(long bytes, String unitName) {
        //格式化小数
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        return decimalFormat.format((float)bytes / KB) + unitName;
    }

    /**
     * byte转mb
     *
     * @param bytes
     * @return
     */
    public static String byte2mb(long bytes) {
        //格式化小数
        return byte2mb(bytes,"");
    }

    /**
     * byte转mb
     *
     * @param bytes
     * @return
     */
    public static String byte2mb(long bytes, String unitName) {
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        return decimalFormat.format((float)bytes / MB) + unitName;
    }

    /**
     * byte转gb
     *
     * @param bytes
     * @return
     */
    public static String byte2gb(long bytes) {
        //格式化小数
        return byte2gb(bytes,"");
    }

    /**
     * byte转gb
     *
     * @param bytes
     * @return
     */
    public static String byte2gb(long bytes, String unitName) {
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        return decimalFormat.format((float)bytes / GB) + unitName;
    }
}
